package com.dragon.modules.yuegou.model.product;

import com.dragon.modules.yuegou.entity.product.SpuEntity;
import com.dragon.modules.yuegou.enums.OwnerType;
import com.dragon.modules.yuegou.enums.SkuType;
import com.dragon.modules.yuegou.enums.product.SkuSettlementType;
import com.dragon.modules.yuegou.enums.product.SpuPackageType;
import com.dragon.modules.yuegou.enums.product.SpuPriorityShow;
import com.dragon.modules.yuegou.enums.product.SpuPublishStatus;
import com.dragon.modules.yuegou.enums.product.SpuShowModule;
import com.dragon.modules.yuegou.enums.product.SpuTemplateType;
import com.dragon.modules.yuegou.enums.product.SpuTimeLimitType;
import com.dragon.modules.yuegou.enums.product.SpuVerifyStatus;
import com.dragon.modules.yuegou.enums.product.SpuViewModel;
import com.dragon.modules.yuegou.model.merchant.Merchant;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 商品信息模型类
 * 
 * @author pbuilder generated
 * @date 2019-09-29 16:03:08
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class Spu extends SpuEntity {

	@ApiModelProperty("优惠券描述")
	private String details;

	@ApiModelProperty("总量")
	private Integer total;

	@ApiModelProperty("销量")
	private Integer sale;

	@ApiModelProperty("可核销商户")
	private List<Merchant> merchantList;

	@ApiModelProperty("可核销商户名单")
	private String merchantNames;

	@ApiModelProperty("可核销商户名")
	private String merchantName;

	@ApiModelProperty("可使用商圈名称，仅用于我的悦卡列表显示")
	private String scopeBusdName;

	@ApiModelProperty("商品分类")
	private String categoryName;

	@ApiModelProperty("商品规格")
	private List<Sku> skuList;

	@ApiModelProperty("规格属性信息")
	private List<Specs> specsList;

	@ApiModelProperty("规格参数信息")
	private List<Param> sparamList;

	@ApiModelProperty("商品参数信息")
	private List<Param> paramList;

	@ApiModelProperty("商品货号")
	private String code;

	@ApiModelProperty("秒杀活动信息")
	private Seckill seckill;

	@ApiModelProperty("限时折扣信息")
	private LimitSales limitSales;

	@ApiModelProperty("套餐内商品信息")
	private List<Package> packageList;

	@ApiModelProperty("有效期")
	private String validityDateStr;

	@ApiModelProperty("限购等级")
	private String minBuyLevelName;

	@ApiModelProperty("可核销数量标识  1-一个、2-多个")
	private Integer mark;

	@ApiModelProperty("优质好货单个可核销商户")
	private Merchant merchant;

	@ApiModelProperty("优质好货多个可核销商户")
	private List<String> merchants;

	@ApiModelProperty("商品规格列表")
	private List<Attribute> attributeList;

	@ApiModelProperty("商户发布-1；商圈发布-2")
	private Integer publishType;

	@ApiModelProperty("miniAppId")
	private String miniAppId;

	@ApiModelProperty("详情地址")
	private String detailUrl;

	@ApiModelProperty("什么时间至今,一周内-0、一个月-1、近三月-2、近半年-3、全部-4")
	private Integer theBeginTime;

	@ApiModelProperty("商品状态,未通过-0、待审核-1、出售中-2、已下架-3")
	private Integer productStatus;

	@ApiModelProperty("结算价")
	private BigDecimal settlementPrice;

	/** [枚举]结算类型：2-平台自营-PLATFORM、1-商户自营-MERCHANT" */
	@ApiModelProperty("[枚举]结算类型：2-平台自营-PLATFORM、1-商户自营-MERCHANT")
	protected SkuSettlementType settlementType;

	/** 成本价 */
	@ApiModelProperty("成本价")
	protected BigDecimal ownerPrice;

	@ApiModelProperty("商品的可用代金券数量")
	private Integer cashCouponNum;

	@ApiModelProperty("优惠券名称")
	private String templateName;

	/** 会员价 */
	@ApiModelProperty("会员价")
	protected BigDecimal memberPrice;

	@ApiModelProperty("商品权益信息")
	private List<ProRightsInfo> rightsInfoList ;
	
    /** [枚举]优先展示：0-否-NO、1-是-YES */
	@ApiModelProperty("[枚举]优先展示：0-否-NO、1-是-YES")
	private SpuPriorityShow priorityShow;

	@ApiModelProperty("库存")
	private Integer spuStock;

	public Integer getSpuStock() {
		return spuStock;
	}

	public void setSpuStock(Integer spuStock) {
		this.spuStock = spuStock;
	}

	@Override
	public LocalDateTime getInvertedBeginTime() {
		return invertedBeginTime;
	}

	public Spu invertedBeginTime(LocalDateTime invertedBeginTime) {
		this.invertedBeginTime = invertedBeginTime;
		return this;
	}

	@Override
	public LocalDateTime getInvertedEndTime() {
		return invertedEndTime;
	}

	public Spu invertedEndTime(LocalDateTime invertedEndTime) {
		this.invertedEndTime = invertedEndTime;
		return this;
	}

	@Override
	public Integer getInvertedShow() {
		return invertedShow;
	}


	public Spu invertedShow(Integer invertedShow) {
		this.invertedShow = invertedShow;
		return this;
	}

	@Override
	public LocalDateTime getSellBeginTime() {
		return sellBeginTime;
	}


	public Spu sellBeginTime(LocalDateTime sellBeginTime) {
		this.sellBeginTime = sellBeginTime;
		return this;
	}

	@Override
	public LocalDateTime getSellEndTime() {
		return sellEndTime;
	}

	public Spu sellEndTime(LocalDateTime sellEndTime) {
        this.sellEndTime = sellEndTime;
        return this;
    }
	public SkuSettlementType getSettlementType() {
		return settlementType;
	}

	public void setSettlementType(SkuSettlementType settlementType) {
		this.settlementType = settlementType;
	}

	public BigDecimal getOwnerPrice() {
		return ownerPrice;
	}

	public void setOwnerPrice(BigDecimal ownerPrice) {
		this.ownerPrice = ownerPrice;
	}

	@Override
	public LocalDateTime getBuyBeginTime() {
		return buyBeginTime;
	}
	
	@Override
	public LocalDateTime getBuyEndTime() {
		return buyEndTime;
	}


	public List<ProRightsInfo> getRightsInfoList() {
		return rightsInfoList;
	}
	public void setRightsInfoList(List<ProRightsInfo> rightsInfoList) {
		this.rightsInfoList = rightsInfoList;
	}

	public String getTemplateName() {
		return templateName;
	}

	public void setTemplateName(String templateName) {
		this.templateName = templateName;
	}

	public BigDecimal getMemberPrice() {
		return memberPrice;
	}

	public void setMemberPrice(BigDecimal memberPrice) {
		this.memberPrice = memberPrice;
	}

	public String getDetails() {
		return details;
	}

	public void setDetails(String details) {
		this.details = details;
	}

	public BigDecimal getSettlementPrice() {
		return settlementPrice;
	}

	public void setSettlementPrice(BigDecimal settlementPrice) {
		this.settlementPrice = settlementPrice;
	}

	public Integer getProductStatus() {
		return productStatus;
	}

	public void setProductStatus(Integer productStatus) {
		this.productStatus = productStatus;
	}

	public Integer getTheBeginTime() {
		return theBeginTime;
	}

	public void setTheBeginTime(Integer theBeginTime) {
		this.theBeginTime = theBeginTime;
	}

	public LocalDateTime getViewBeginTime() {
		return viewBeginTime;
	}

	public LocalDateTime getViewEndTime() {
		return viewEndTime;
	}

	public String getMiniAppId() {
		return miniAppId;
	}

	public void setMiniAppId(String miniAppId) {
		this.miniAppId = miniAppId;
	}

	public String getDetailUrl() {
		return detailUrl;
	}

	public void setDetailUrl(String detailUrl) {
		this.detailUrl = detailUrl;
	}

	public List<Attribute> getAttributeList() {
		return attributeList;
	}

	public void setAttributeList(List<Attribute> attributeList) {
		this.attributeList = attributeList;
	}

	public Integer getTotal() {
		return total;
	}

	public void setTotal(Integer total) {
		this.total = total;
	}

	public Integer getSale() {
		return sale;
	}

	public void setSale(Integer sale) {
		this.sale = sale;
	}

	public List<Package> getPackageList() {
		return packageList;
	}

	public void setPackageList(List<Package> packageList) {
		this.packageList = packageList;
	}

	public String getScopeBusdName() {
		return scopeBusdName;
	}

	public void setScopeBusdName(String scopeBusdName) {
		this.scopeBusdName = scopeBusdName;
	}

	public List<Merchant> getMerchantList() {
		return merchantList;
	}

	public void setMerchantList(List<Merchant> merchantList) {
		this.merchantList = merchantList;
	}

	public List<Sku> getSkuList() {
		return skuList;
	}

	public String getMerchantNames() {
		return merchantNames;
	}

	public void setMerchantNames(String merchantNames) {
		this.merchantNames = merchantNames;
	}

	public String getMerchantName() {
		return merchantName;
	}

	public void setMerchantName(String merchantName) {
		this.merchantName = merchantName;
	}

	public void setSkuList(List<Sku> skuList) {
		this.skuList = skuList;
	}

	public List<Specs> getSpecsList() {
		return specsList;
	}

	public void setSpecsList(List<Specs> specsList) {
		this.specsList = specsList;
	}

	public List<Param> getParamList() {
		return paramList;
	}

	public void setParamList(List<Param> paramList) {
		this.paramList = paramList;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public Seckill getSeckill() {
		return seckill;
	}

	public void setSeckill(Seckill seckill) {
		this.seckill = seckill;
	}

	public List<Param> getSparamList() {
		return sparamList;
	}

	public void setSparamList(List<Param> sparamList) {
		this.sparamList = sparamList;
	}

	public LimitSales getLimitSales() {
		return limitSales;
	}

	public void setLimitSales(LimitSales limitSales) {
		this.limitSales = limitSales;
	}

	public Integer getMark() {
		return mark;
	}

	public void setMark(Integer mark) {
		this.mark = mark;
	}

	public Merchant getMerchant() {
		return merchant;
	}

	public void setMerchant(Merchant merchant) {
		this.merchant = merchant;
	}

	public List<String> getMerchants() {
		return merchants;
	}

	public void setMerchants(List<String> merchants) {
		this.merchants = merchants;
	}

	/**
	 * 构造一个空商品信息模型对象
	 */
	public Spu() {
		super();
	}

	/**
	 * 依据实体对象的信息构造一个商品信息模型对象
	 * 
	 * @param entity
	 *            实体对象
	 */
	public Spu(SpuEntity entity) {
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个商品信息模型对象
	 * 
	 * @param other
	 *            其它对象
	 */
	public Spu(Spu other) {
		super(other);
	}

	public String getCategoryName() {
		return categoryName;
	}

	public void setCategoryName(String categoryName) {
		this.categoryName = categoryName;
	}

	@Override
	public String getId() {
		return id;
	}

	/**
	 * 设置ID
	 * 
	 * @param id
	 *            ID
	 * @return 当前对象
	 */
	public Spu id(String id) {
		this.id = id;
		return this;
	}

	@Override
	public String getGroupId() {
		return groupId;
	}

	/**
	 * 设置集团ID
	 * 
	 * @param groupId
	 *            集团ID
	 * @return 当前对象
	 */
	public Spu groupId(String groupId) {
		this.groupId = groupId;
		return this;
	}

	@Override
	public OwnerType getOwnerType() {
		return ownerType;
	}

	/**
	 * 设置[全局枚举]所有者类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT
	 * 
	 * @param ownerType
	 *            [全局枚举]所有者类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSINESS_DISTRICT、3-商户-MERCHANT
	 * @return 当前对象
	 */
	public Spu ownerType(OwnerType ownerType) {
		this.ownerType = ownerType;
		return this;
	}

	@Override
	public SkuType getSkuType() {
		return skuType;
	}

	/**
	 * 设置[全局枚举]商品类型：0-悦卡-YUECARD、1-套餐-PACKAGE、2-商户停车券-PARKCOUPON、3-积分停车券-POINTPARKCOUPON、4-实物-GOODS、5-积分商品-POINTGOODS、6-伪造商品-MOCK、7-奖品-PRIZE、8-优惠券-DISCOUNTCOUPON
	 * 
	 * @param skuType
	 *            [全局枚举]商品类型：0-悦卡-YUECARD、1-套餐-PACKAGE、2-商户停车券-PARKCOUPON、3-积分停车券-POINTPARKCOUPON、4-实物-GOODS、5-积分商品-POINTGOODS、6-伪造商品-MOCK、7-奖品-PRIZE、8-优惠券-DISCOUNTCOUPON
	 * @return 当前对象
	 */
	public Spu skuType(SkuType skuType) {
		this.skuType = skuType;
		return this;
	}

	@Override
	public String getBusdId() {
		return busdId;
	}

	/**
	 * 设置商圈ID
	 * 
	 * @param busdId
	 *            商圈ID
	 * @return 当前对象
	 */
	public Spu busdId(String busdId) {
		this.busdId = busdId;
		return this;
	}

	@Override
	public String getCategoryId() {
		return categoryId;
	}

	/**
	 * 设置商品类目ID
	 * 
	 * @param categoryId
	 *            商品类目ID
	 * @return 当前对象
	 */
	public Spu categoryId(String categoryId) {
		this.categoryId = categoryId;
		return this;
	}

	@Override
	public String getMerchantId() {
		return merchantId;
	}

	/**
	 * 设置商家ID
	 * 
	 * @param merchantId
	 *            商家ID
	 * @return 当前对象
	 */
	public Spu merchantId(String merchantId) {
		this.merchantId = merchantId;
		return this;
	}

	@Override
	public String getTitle() {
		return title;
	}

	/**
	 * 设置商品名称/标题
	 * 
	 * @param title
	 *            商品名称/标题
	 * @return 当前对象
	 */
	public Spu title(String title) {
		this.title = title;
		return this;
	}

	public SpuShowModule getShowModule() {
		return showModule;
	}

	/**
	 * 设置[枚举]展示模块：0-优选好货-GOODS、1-积分商城-SHOP、2-套餐-PACKAGE、3-商户停车券-MERCHANT、4-限时折扣-LIMITSALES、5-秒杀-SECKILL、6-拼团-COLLAGE、7-助力砍价-HELP、10-套餐子商品-PACKAGE_ITEM、11-奖品-PRIZE、12-到家商品-GOHOME、13-不显示-NOSHOW
	 * 
	 * @param showModule
	 *            [枚举]展示模块：0-优选好货-GOODS、1-积分商城-SHOP、2-套餐-PACKAGE、3-商户停车券-MERCHANT、4-限时折扣-LIMITSALES、5-秒杀-SECKILL、6-拼团-COLLAGE、7-助力砍价-HELP、10-套餐子商品-PACKAGE_ITEM、11-奖品-PRIZE、12-到家商品-GOHOME、13-不显示-NOSHOW
	 * @return 当前对象
	 */
    public Spu showModule(SpuShowModule showModule) {
    	this.showModule = showModule;
    	return this;
    }

	@Override
	public String getShowBtnTitle() {
    	return showBtnTitle;
    }

    /**
	 * 设置显示按钮名称
	 * 
	 * @param showBtnTitle 显示按钮名称
	 * @return 当前对象
	 */
    public Spu showBtnTitle(String showBtnTitle) {
    	this.showBtnTitle = showBtnTitle;
    	return this;
    }

	@Override
	public Integer getStock() {
		return stock;
	}

	/**
	 * 设置库存量
	 * 
	 * @param stock
	 *            库存量
	 * @return 当前对象
	 */
	public Spu stock(Integer stock) {
		this.stock = stock;
		return this;
	}

	@Override
	public String getMainImg() {
		return mainImg;
	}

	/**
	 * 设置产品主图
	 * 
	 * @param mainImg
	 *            产品主图
	 * @return 当前对象
	 */
	public Spu mainImg(String mainImg) {
		this.mainImg = mainImg;
		return this;
	}

	@Override
	public String getImgs() {
		return imgs;
	}

	/**
	 * 设置图片列表
	 * 
	 * @param imgs
	 *            图片列表
	 * @return 当前对象
	 */
	public Spu imgs(String imgs) {
		this.imgs = imgs;
		return this;
	}

	@Override
	public BigDecimal getMaxPrice() {
		return maxPrice;
	}

	/**
	 * 设置商品最高价
	 * 
	 * @param maxPrice
	 *            商品最高价
	 * @return 当前对象
	 */
	public Spu maxPrice(BigDecimal maxPrice) {
		this.maxPrice = maxPrice;
		return this;
	}

	@Override
	public BigDecimal getMinPrice() {
		return minPrice;
	}

	/**
	 * 设置商品最低价
	 * 
	 * @param minPrice
	 *            商品最低价
	 * @return 当前对象
	 */
	public Spu minPrice(BigDecimal minPrice) {
		this.minPrice = minPrice;
		return this;
	}

	@Override
	public BigDecimal getPrice() {
		return price;
	}

	/**
	 * 设置单价
	 * 
	 * @param price
	 *            单价
	 * @return 当前对象
	 */
	public Spu price(BigDecimal price) {
		this.price = price;
		return this;
	}

	@Override
	public Integer getPoint() {
		return point;
	}

	/**
	 * 设置积分
	 * 
	 * @param point
	 *            积分
	 * @return 当前对象
	 */
	public Spu point(Integer point) {
		this.point = point;
		return this;
	}

	@Override
	public Integer getMaxBuyNum() {
		return maxBuyNum;
	}

	/**
	 * 设置每人最大购买数量
	 * 
	 * @param maxBuyNum
	 *            每人最大购买数量
	 * @return 当前对象
	 */
	public Spu maxBuyNum(Integer maxBuyNum) {
		this.maxBuyNum = maxBuyNum;
		return this;
	}

	@Override
	public Integer getMinBuyLevel() {
		return minBuyLevel;
	}

	/**
	 * 设置积分商品 最低购买等级 0为不限制
	 * 
	 * @param minBuyLevel
	 *            积分商品 最低购买等级 0为不限制
	 * @return 当前对象
	 */
	public Spu minBuyLevel(Integer minBuyLevel) {
		this.minBuyLevel = minBuyLevel;
		return this;
	}

	public String getMinBuyLevelName() {
		return minBuyLevelName;
	}

	public void setMinBuyLevelName(String minBuyLevelName) {
		this.minBuyLevelName = minBuyLevelName;
	}

	@Override
	public BigDecimal getMarketPrice() {
		return marketPrice;
	}

	/**
	 * 设置市场价
	 * 
	 * @param marketPrice
	 *            市场价
	 * @return 当前对象
	 */
	public Spu marketPrice(BigDecimal marketPrice) {
		this.marketPrice = marketPrice;
		return this;
	}
	
	public SpuPriorityShow getPriorityShow() {
    	return priorityShow;
    }

   
	public void setPriorityShow(SpuPriorityShow priorityShow) {
		this.priorityShow = priorityShow;
	}

	@Override
	public String getBrand() {
		return brand;
	}

	/**
	 * 设置品牌
	 * 
	 * @param brand
	 *            品牌
	 * @return 当前对象
	 */
	public Spu brand(String brand) {
		this.brand = brand;
		return this;
	}

	@Override
	public String getTemplateId() {
		return templateId;
	}

	/**
	 * 设置模板ID
	 * 
	 * @param templateId
	 *            模板ID
	 * @return 当前对象
	 */
	public Spu templateId(String templateId) {
		this.templateId = templateId;
		return this;
	}

	@Override
	public SpuTemplateType getTemplateType() {
		return templateType;
	}

	/**
	 * 设置[枚举]模板类型：0-优惠券-COUPON、1-悦卡-YUECARD
	 * 
	 * @param templateType
	 *            [枚举]模板类型：0-优惠券-COUPON、1-悦卡-YUECARD
	 * @return 当前对象
	 */
	public Spu templateType(SpuTemplateType templateType) {
		this.templateType = templateType;
		return this;
	}

	@Override
	public SpuPublishStatus getPublishStatus() {
		return publishStatus;
	}

	/**
	 * 设置[枚举]上架状态：0-下架-LOWER、1-上架-UPPER
	 * 
	 * @param publishStatus
	 *            [枚举]上架状态：0-下架-LOWER、1-上架-UPPER
	 * @return 当前对象
	 */
	public Spu publishStatus(SpuPublishStatus publishStatus) {
		this.publishStatus = publishStatus;
		return this;
	}

	@Override
	public SpuVerifyStatus getVerifyStatus() {
		return verifyStatus;
	}

	/**
	 * 设置[枚举]审核状态：0-未提交-UNSUBMITTED、1-已提交未审核-CHECKING、2-审核通过-PASSED、3-审核不通过-UNPASSED
	 * 
	 * @param verifyStatus
	 *            [枚举]审核状态：0-未提交-UNSUBMITTED、1-已提交未审核-CHECKING、2-审核通过-PASSED、3-审核不通过-UNPASSED
	 * @return 当前对象
	 */
	public Spu verifyStatus(SpuVerifyStatus verifyStatus) {
		this.verifyStatus = verifyStatus;
		return this;
	}

	@Override
	public SpuTimeLimitType getTimeLimitType() {
		return timeLimitType;
	}

	/**
	 * 设置[枚举]时间限制类型：0-固定时段-FIXED_RANGE、1-有效天数-VALID_DAYS、2-从不失效-NO_RULE
	 * 
	 * @param timeLimitType
	 *            [枚举]时间限制类型：0-固定时段-FIXED_RANGE、1-有效天数-VALID_DAYS、2-从不失效-NO_RULE
	 * @return 当前对象
	 */
	public Spu timeLimitType(SpuTimeLimitType timeLimitType) {
		this.timeLimitType = timeLimitType;
		return this;
	}

	@Override
	public Integer getValidDays() {
		return validDays;
	}

	@Override
	public SpuViewModel getViewModel() {
		return super.getViewModel();
	}

	@Override
	public void setViewModel(SpuViewModel viewModel) {
		super.setViewModel(viewModel);
	}

	/**
	 * 设置失效天数（获取后能够有效的天数）
	 * 
	 * @param validDays
	 *            失效天数（获取后能够有效的天数）
	 * @return 当前对象
	 */
	public Spu validDays(Integer validDays) {
		this.validDays = validDays;
		return this;
	}

	@Override
	public LocalDateTime getBeginTime() {
		return beginTime;
	}

	/**
	 * 设置有效期 开始时间
	 * 
	 * @param beginTime
	 *            有效期 开始时间
	 * @return 当前对象
	 */
	public Spu beginTime(LocalDateTime beginTime) {
		this.beginTime = beginTime;
		return this;
	}

	@Override
	public LocalDateTime getEndTime() {
		return endTime;
	}

	/**
	 * 设置有效期 结束时间
	 * 
	 * @param endTime
	 *            有效期 结束时间
	 * @return 当前对象
	 */
	public Spu endTime(LocalDateTime endTime) {
		this.endTime = endTime;
		return this;
	}

	@Override
	public String getDescription() {
		return description;
	}

	/**
	 * 设置商品描述 图片列表
	 * 
	 * @param description
	 *            商品描述 图片列表
	 * @return 当前对象
	 */
	public Spu description(String description) {
		this.description = description;
		return this;
	}

	@Override
	public String getImgDescription() {
		return imgDescription;
	}

	/**
	 * 设置商品图片描述 图片列表
	 * 
	 * @param imgDescription
	 *            商品图片描述 图片列表
	 * @return 当前对象
	 */
	public Spu imgDescription(String imgDescription) {
		this.imgDescription = imgDescription;
		return this;
	}

	@Override
	public SpuPackageType getPackageType() {
		return packageType;
	}

	/**
	 * 设置[枚举]是否套餐：0-否-NO、1-是-YES
	 * 
	 * @param packageType
	 *            [枚举]是否套餐：0-否-NO、1-是-YES
	 * @return 当前对象
	 */
	public Spu packageType(SpuPackageType packageType) {
		this.packageType = packageType;
		return this;
	}

	@Override
	public Integer getScanNum() {
		return scanNum;
	}

	/**
	 * 设置浏览量
	 * 
	 * @param scanNum
	 *            浏览量
	 * @return 当前对象
	 */
	public Spu scanNum(Integer scanNum) {
		this.scanNum = scanNum;
		return this;
	}

	@Override
	public String getUseRule() {
		return useRule;
	}

	/**
	 * 设置使用规则
	 * 
	 * @param useRule
	 *            使用规则
	 * @return 当前对象
	 */
	public Spu useRule(String useRule) {
		this.useRule = useRule;
		return this;
	}

	@Override
	public String getCreatedBy() {
		return createdBy;
	}

	/**
	 * 设置创建人ID
	 * 
	 * @param createdBy
	 *            创建人ID
	 * @return 当前对象
	 */
	public Spu createdBy(String createdBy) {
		this.createdBy = createdBy;
		return this;
	}

	@Override
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}

	/**
	 * 设置创建时间
	 * 
	 * @param createdTime
	 *            创建时间
	 * @return 当前对象
	 */
	public Spu createdTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
		return this;
	}

	@Override
	public String getModifiedBy() {
		return modifiedBy;
	}

	/**
	 * 设置更新人ID
	 * 
	 * @param modifiedBy
	 *            更新人ID
	 * @return 当前对象
	 */
	public Spu modifiedBy(String modifiedBy) {
		this.modifiedBy = modifiedBy;
		return this;
	}

	@Override
	public LocalDateTime getModifiedTime() {
		return modifiedTime;
	}

	/**
	 * 设置更新时间
	 * 
	 * @param modifiedTime
	 *            更新时间
	 * @return 当前对象
	 */
	public Spu modifiedTime(LocalDateTime modifiedTime) {
		this.modifiedTime = modifiedTime;
		return this;
	}

	@Override
	public String getCheckBy() {
		return checkBy;
	}

	/**
	 * 设置审批人
	 * 
	 * @param checkBy
	 *            审批人
	 * @return 当前对象
	 */
	public Spu checkBy(String checkBy) {
		this.checkBy = checkBy;
		return this;
	}

	@Override
	public LocalDateTime getCheckTime() {
		return checkTime;
	}

	/**
	 * 设置审批时间
	 * 
	 * @param checkTime
	 *            审批时间
	 * @return 当前对象
	 */
	public Spu checkTime(LocalDateTime checkTime) {
		this.checkTime = checkTime;
		return this;
	}

	@Override
	public String getCheckRemark() {
		return checkRemark;
	}

	/**
	 * 设置审批意见
	 * 
	 * @param checkRemark
	 *            审批意见
	 * @return 当前对象
	 */
	public Spu checkRemark(String checkRemark) {
		this.checkRemark = checkRemark;
		return this;
	}

	@Override
	public Boolean getDel() {
		return del;
	}

	/**
	 * 设置逻辑删除，1表示已删除,0表示未删除
	 * 
	 * @param del
	 *            逻辑删除，1表示已删除,0表示未删除
	 * @return 当前对象
	 */
	public Spu del(Boolean del) {
		this.del = del;
		return this;
	}

	@Override
	public String getDelBy() {
		return delBy;
	}

	/**
	 * 设置删除人ID
	 * 
	 * @param delBy
	 *            删除人ID
	 * @return 当前对象
	 */
	public Spu delBy(String delBy) {
		this.delBy = delBy;
		return this;
	}

	@Override
	public LocalDateTime getDelTime() {
		return delTime;
	}

	/**
	 * 设置删除时间
	 * 
	 * @param delTime
	 *            删除时间
	 * @return 当前对象
	 */
	public Spu delTime(LocalDateTime delTime) {
		this.delTime = delTime;
		return this;
	}

	@Override
	public Integer getSortNo() {
		return sortNo;
	}

	/**
	 * 设置排序
	 * 
	 * @param sortNo
	 *            排序
	 * @return 当前对象
	 */
	public Spu sortNo(Integer sortNo) {
		this.sortNo = sortNo;
		return this;
	}

	public String getValidityDateStr() {
		return validityDateStr;
	}

	public void setValidityDateStr(String validityDateStr) {
		this.validityDateStr = validityDateStr;
	}

	public Integer getPublishType() {
		return publishType;
	}

	public void setPublishType(Integer publishType) {
		this.publishType = publishType;
	}

	public Integer getCashCouponNum() {
		return cashCouponNum;
	}

	public void setCashCouponNum(Integer cashCouponNum) {
		this.cashCouponNum = cashCouponNum;
	}

}
